package com.zhuojy.equity.mall.admin.common.support;

import com.zhuojy.equity.mall.admin.common.enums.ErrCdEnum;
import lombok.ToString;

import java.io.Serializable;

/**
 * 接口统一返回结果 使用isSuccess判断调用是否成功 ,如果为true,则可以调用getResult,如果为false,则调用errorCode来获取出错信息
 */
@ToString
public class Result<T>  implements Serializable {

	private static final long serialVersionUID = 6911752112367572339L;

	/**
	 * 调用是否成功
	 */
	private boolean success;

	/**
	 * 调用结果集
	 */
	private T result;

	/**
	 * 错误码
	 */
	private String errCd;

	/**
	 * 错误描述
	 */
	private String errMsg;

	/**
	 * 默认构造方法
	 */
	public Result() {
	}

	/**
	 * 直接构造成功的返回
	 */
	public Result(T result) {
		this.success = true;
		this.result = result;
	}

	/**
	 * 根据错误码枚举构建失败的返回
	 */
	public Result(ErrCdEnum errCdEnum) {
		this.success = false;
		this.errCd = errCdEnum.getCode();
		this.errMsg = errCdEnum.getDesc();
	}

	/**
	 * 直接构造失败的返回
	 *
	 * @param errCd  错误码
	 * @param errMsg 错误描述
	 */
	public Result(String errCd, String errMsg) {
		this.success = false;
		this.errCd = errCd;
		this.errMsg = errMsg;
	}
	/**
	 * 构造失败的返回
	 *
	 * @param errMsg 错误描述
	 */
	public Result( String errMsg) {
		this.success = false;
		this.errMsg = errMsg;
	}

	/**
	 * 判断调用是否成功
	 */
	public boolean isSuccess() {
		return success;
	}

	/**
	 * 获取调用结果集
	 */
	public T getResult() {
		return result;
	}

	/**
	 * 设置调用结果集
	 */
	public void setResult(T result) {

		success = true;
		this.result = result;
	}

	/**
	 * 获取错误码
	 */
	public String getErrCd() {
		return errCd;
	}


	/**
	 * 设置错误码
	 */
	public void setErrCd(String errCd) {
		this.success = false;
		this.errCd = errCd;
	}

	/**
	 * 获取错误描述
	 */
	public String getErrMsg() {
		return errMsg;
	}

	/**
	 * 设置错误描述
	 */
	public void setErrMsg(String errMsg) {
		this.errMsg = errMsg;
	}
}
